var json = require('rollup-plugin-json');

// Karma configuration
module.exports = function (config) {

    // 	var libSources = require(__dirname + '/../build/build.js').getFiles();

    var files = [
        "spec/sinon.js",
        "spec/expect.js",

        "node_modules/leaflet/dist/leaflet-src.js",
        "src/index.js",

        "spec/after.js",
        "node_modules/happen/happen.js",
        "spec/suites/SpecHelper.js",
        "spec/suites/**/*.js",
        "dist/*.css"
    ];

    config.set({
        // base path, that will be used to resolve files and exclude
        basePath: '../',

        plugins: [
            'karma-rollup-preprocessor',
            'karma-mocha',
            'karma-coverage',
            'karma-phantomjs-launcher',
            'karma-chrome-launcher',
            'karma-safari-launcher',
            'karma-firefox-launcher'
        ],

        // frameworks to use
        frameworks: ['mocha'],

        // list of files / patterns to load in the browser
        files: files,
// 		proxies: {
// 			'/base/dist/images/': 'dist/images/'
// 		},
        exclude: [],

        // Rollup the ES6 Leaflet.markercluster sources into just one file, before tests
        preprocessors: {
            'src/index.js': ['rollup']
        },
        rollupPreprocessor: {
            plugins: [
                json()
            ],
            output: {
                format: 'umd',
                name: 'Leaflet.markercluster'
            },
        },

        // test results reporter to use
        // possible values: 'dots', 'progress', 'junit', 'growl', 'coverage'
        reporters: ['dots'],

        // web server port
        port: 9876,

        // level of logging
        // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
        logLevel: config.LOG_WARN,

        // enable / disable colors in the output (reporters and logs)
        colors: true,

        // enable / disable watching file and executing tests whenever any file changes
        autoWatch: false,

        // Start these browsers, currently available:
        // - Chrome
        // - ChromeCanary
        // - Firefox
        // - Opera
        // - Safari (only Mac)
        // - PhantomJS
        // - IE (only Windows)
        browsers: ['PhantomJS'],

        // If browser does not capture in given timeout [ms], kill it
        captureTimeout: 5000,

        // Workaround for PhantomJS random DISCONNECTED error
        browserDisconnectTimeout: 10000, // default 2000
        browserDisconnectTolerance: 1, // default 0

        // Continuous Integration mode
        // if true, it capture browsers, run tests and exit
        singleRun: true
    });
};
